/**
 * 
 */
package ar.com.fiuba.team2.model;

import org.jdom2.Element;

import ar.com.fiuba.team2.parser.GeneralParser;

/**
 * @author sergio
 *
 */
public class MensajeChat {

	private Long id;
	private MiembroChat miembro;
	private String contenidoMensaje;
	private Long fechaMensaje;
	private Long idChat;
	
	public MensajeChat() {
	}
	
	public MensajeChat(MiembroChat miembro,String contenidoMensaje,Long fechaMensaje){
		this.setContenidoMensaje(contenidoMensaje);
		this.setFechaMensaje(fechaMensaje);
		this.setMiembro(miembro);
	}

	/**
	 * @return the id
	 */
	public long getId() {
		return id;
	}

	/**
	 * @param id the id to set
	 */
	public void setId(Long id) {
		this.id = id;
	}


	/**
	 * @return the contenidoMensaje
	 */
	public String getContenidoMensaje() {
		return contenidoMensaje;
	}

	/**
	 * @param contenidoMensaje the contenidoMensaje to set
	 */
	public void setContenidoMensaje(String contenidoMensaje) {
		this.contenidoMensaje = contenidoMensaje;
	}

	/**
	 * @return the miembro
	 */
	public MiembroChat getMiembro() {
		return miembro;
	}

	/**
	 * @param miembro the miembro to set
	 */
	public void setMiembro(MiembroChat miembro) {
		this.miembro = miembro;
	}

	/**
	 * @return the fechaMensaje
	 */
	public Long getFechaMensaje() {
		return fechaMensaje;
	}

	/**
	 * @param fechaMensaje the fechaMensaje to set
	 */
	public void setFechaMensaje(Long fechaMensaje) {
		this.fechaMensaje = fechaMensaje;
	}


	/* (non-Javadoc)
	 * @see java.lang.Object#hashCode()
	 */
	@Override
	public int hashCode() {
		final int prime = 31;
		int result = 1;
		result = prime
				* result
				+ ((contenidoMensaje == null) ? 0 : contenidoMensaje.hashCode());
		result = prime * result
				+ ((fechaMensaje == null) ? 0 : fechaMensaje.hashCode());
		return result;
	}


	/* (non-Javadoc)
	 * @see java.lang.Object#equals(java.lang.Object)
	 */
	@Override
	public boolean equals(Object obj) {
		if (this == obj)
			return true;
		if (obj == null)
			return false;
		if (getClass() != obj.getClass())
			return false;
		MensajeChat other = (MensajeChat) obj;
		if (contenidoMensaje == null) {
			if (other.contenidoMensaje != null)
				return false;
		} else if (!contenidoMensaje.equals(other.contenidoMensaje))
			return false;
		if (fechaMensaje == null) {
			if (other.fechaMensaje != null)
				return false;
		} else if (!fechaMensaje.equals(other.fechaMensaje))
			return false;
		return true;
	}

	public String toXML() {
		StringBuilder str = new StringBuilder();
		str.append("<MensajeChat>");
		str.append("<id>").append(this.getId()).append("</id>");
		str.append("<contenido>").append(this.getContenidoMensaje()).append("</contenido>");
		str.append("<idChat>").append(this.getIdChat()).append("</idChat>");
		//str.append("<miembroChatId>").append(this.getMiembro().getId()).append("</miembroChatId>");
		str.append("</MensajeChat>");
		
		return str.toString();
	}
	
	
	public void fromXML(Element element) {
		Long id = GeneralParser.extractLong(element,"id");
		this.setId(id);
		
		String contenido = GeneralParser.extractString(element,"contenido");
		this.setContenidoMensaje(contenido);					
		
		Long idChat = GeneralParser.extractLong(element,"idChat");
		this.setIdChat(idChat);

		Long miembroId = GeneralParser.extractLong(element,"miembroChatId");
		MiembroChat m = new MiembroChat(miembroId);
		this.setMiembro(m);
	}

	public void setIdChat(Long idChat) {
		this.idChat = idChat;
	}
	
	public Long getIdChat() {
		return idChat;
	}
	
	
}
